package com.zjc.agent.ai.tools;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.zjc.agent.ai.domain.dto.FlightDto;
import com.zjc.agent.ai.utils.HttpUtil;
import com.zjc.agent.ai.utils.TokenContextHolder;
import dev.langchain4j.agent.tool.P;
import dev.langchain4j.agent.tool.Tool;
import lombok.extern.slf4j.Slf4j;

import java.net.URI;

/**
 * 面试和航班搜索工具
 */
@Slf4j
public class FlightTool {

    private final ObjectMapper objectMapper = new ObjectMapper();

    /**
     * 调用航班查询服务获取航班信息
     *
     * @param departure     出发地
     * @param arrival       目的地
     * @param departureDate 出发日期 (格式: yyyy-MM-dd)
     * @param adult         成人数量
     * @param child         儿童数量
     * @param infant        婴儿数量
     * @return 航班信息
     */
    @Tool(name = "flightInfoSearch", value = """
            根据出发地、目的地、日期和人数搜索航班信息。
            当用户询问特定日期两地间的航班详情时使用此工具。
            """
    )
    public String searchFlightInfo(
            @P(value = "出发地三字码") String departure,
            @P(value = "目的地三字码") String arrival,
            @P(value = "出发日期，格式为 yyyy-MM-dd，不得早于今天") String departureDate,
            @P(value = "成人数量，默认为0") Integer adult,
            @P(value = "儿童数量，默认为0") Integer child,
            @P(value = "婴儿数量，默认为0") Integer infant) {
        try {
            // 构建FlightDto对象
            FlightDto flightDto = new FlightDto();
            flightDto.setDeparture(departure);
            flightDto.setArrival(arrival);
            flightDto.setDepartureDate(departureDate);

            if (adult != null) {
                flightDto.setAdult(adult);
            }
            if (child != null) {
                flightDto.setChild(child);
            }
            if (infant != null) {
                flightDto.setInfant(infant);
            }

            // 使用HttpUtil发送POST请求
            String res = HttpUtil.post("/flight/search", flightDto);
            log.info("搜索航班信息成功，返回结果为: {}", res);
            return res;
        } catch (Exception e) {
            log.error("搜索航班信息时发生错误", e);
            return "搜索航班信息时发生错误: " + e.getMessage();
        }
    }


}